package me.mingshan.leetcode;

import java.util.HashSet;
import java.util.Set;

/**
 * https://leetcode.cn/problems/sZ59z6/description/
 * <p>
 * 「力扣挑战赛」开幕式开始了，空中绽放了一颗二叉树形的巨型焰火。
 * 给定一棵二叉树 root 代表焰火，节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。
 *
 * @author hanjuntao
 * @date 2025/8/27 0027
 */
public class L_LCP44_开幕式焰火 {

    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);
        root.right.left = new TreeNode(6);
        root.right.right = new TreeNode(6);

        System.out.println(numColors(root));
    }


    public static int numColors(TreeNode root) {
        if (root == null) {
            return 0;
        }

        Set<Integer> set = new HashSet<>();

        pre(root, set);
        return set.size();
    }

    private static void pre(TreeNode root, Set<Integer> set) {
        if (root == null) {
            return;
        }

        set.add(root.val);
        pre(root.left, set);
        pre(root.right, set);
    }
}
